// 密码自定义校验
export const pwdValidate = (_rule: any, value: any, callback: Function) => {
  const reg = /^[0-9A-Za-z]{6,20}$/
  if (!value) {
    callback(new Error('请输入'))
  } else if (!reg.test(value)) {
    callback(new Error('6 - 20位密码,数字或字母,区分大小写'))
  } else {
    callback()
  }
}

// 用户名自定义校验规则
export const usernameValidator = (
  _rule: any,
  value: any,
  callback: (error?: Error) => void
) => {
  // 使用正则表达式检查输入值是否只包含数字和字母
  const regex = /^[a-zA-Z0-9]+$/;
  if (!value) {
    callback(new Error("请输入用户名"));
  } else if (!regex.test(value)) {
    callback(new Error("请输入正确的用户名"));
  } else callback();
};

// 手机号自定义校验规则
const isCellPhone = (val: string) => {
  if (/^1[3-9]\d{9}$/.test(val)) {
    return false;
  } else {
    return true;
  }
};
export const phoneValidator = (_rule: any, value: string, callback: (error?: Error) => void) => {
  // let phoneReg = /(^1[3|4|5|6|7|8|9]\d{9}$)|(^09\d{8}$)/;
  if (value == "") {
    callback(new Error("请输入手机号"));
  } else if (isCellPhone(value)) {
    //引入methods中封装的检查手机格式的方法
    callback(new Error("请输入正确的手机号!"));
  } else {
    callback();
  }
};
// 自定义身份证校验规则
export const idValidator = (_rule: any, value: any, callback: (error?: Error) => void) => {
  // 身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X
  let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  if (value == '') {
    callback(new Error('请输入身份证号'))
  } else if (reg.test(value)) {
    callback()
  } else {
    callback(new Error('请输入正确的身份证号!'))
  }
}
// 自定义价格校验规则
export const priceValidator = (_rules: any, value: string, callback: (error?: Error) => void) => {
  let reg = /^([1-9]\d{0,5}|0)(\.\d{1,2})?$/;
  if (!reg.test(value) || Number(value) <= 0) {
    callback(
      new Error("价格格式有误，请输入大于零且最多保留两位小数的金额")
    );
  } else {
    callback();
  }
}